<?php

namespace app\shop\controller;

use think\Controller;

class Detail extends Controller
{
    //构造函数
    public function __construct()
    {
        parent::__construct();
        //加载模型
        $this->userModel = model('common/User/User');
        $this->bannerModel = model('common/User/Banner');
        $this->shopModel = model('common/User/Shop');
        $this->cartModel = model('common/User/Cart');
        $this->mobileModel = model('common/User/Mobile');
    }
    //详情
    public function getDetail(){
      if($this->request->isPost()){
        $id=$this->request->param('id','');
        // halt($id);
        $detailRes = $this->shopModel->where('id',$id)->select();
        $this->success('返回数据成功',null,$detailRes);
      }
    }

    //轮播图
    public function getBananer(){
      if($this->request->isPost()){
        $id=$this->request->param('id','');
        // halt($id);
        $bannerRes = $this->bannerModel->where('pid',$id)->select();
        $this->success('返回轮播图成功',null,$bannerRes);
      }
    }

    // 购物车
    public function getCart(){
      // halt(config('site.mobile'));
      if($this->request->isPost()){
        $pid = (int)$this->request->param('id','');
        $uid = (int)$this->request->param('uid','');
        $cartdata = [
          'pid'=>$pid,
          'uid'=>$uid
        ];
        $cartRes = $this->cartModel->select();
        // $prdcartRes = $this->cartModel->product()->select();
        // halt($prdcartRes);
        // 关联单个方法
        $singleRes = $this->cartModel->with('product')->where('uid',$uid)->select();
        // halt($res);
        $count = $this->cartModel->where('uid',$uid)->sum('num');
        // halt($count);
        // $pidcout = $this->cartModel->where('pid',$pid)->count();
        // $pidcout = $this->cartModel->where('uid',$uid)->field('pid, uid, count(*) as total')->group('pid')->select();
        $pidcout = $this->cartModel->where($cartdata)->value('num');
        // halt($pidcout);
        // $pids = [];
        // $pidtotal = [];
        // foreach ($pidcout as $item) {
        //   $pids[] = $item->getAttr('pid'); // 使用getAttr获取pid
        //   $pidtotal[] = $item->getAttr('total');
        // }

        // halt($pidtotal);
        // 使用 whereIn 批量查询 $pids是数组
        // $pidList = $this->shopModel->whereIn('id', $pids)->select();

        // 遍历list数组并添加total属性
        // foreach ($pidList as $index => &$item) {
        //     $item->setAttr('total', $pidtotal[$index]);
        // }
        $mobile = $this->mobileModel->where('id',19)->value('value');
        // halt($mobile);

        // $pidList['pidtotal']=$pidtotal;
        // halt($pidList);
        $data = [
          // 全部商品列表
          'cartdata'=>$cartRes,
          // 加入购物车总数
          'total'=>$count,
          // 同个商品加入购物车的总数
          'pdDataCount'=>$pidcout,
          // 购物车列表，去除重复商品，同个商品只渲染一次的列表
          'cartList'=>$singleRes,
          'mobile'=>$mobile,
        ];
        $this->success('返回轮播图成功',null,$data);
        
      }
    }

    // 加入购物车
    public function addCart(){
      // halt(111);
      // halt(config('Mobile'));
      if($this->request->isPost()){
        $pid = $this->request->param('pid','');
        $uid = $this->request->param('uid','');
        $pdData = $this->shopModel->where('id',$pid)->find();
        $num = 0;
        // 如果用户ID不为空
        if($uid !== ''){
          // 如果有这个商品的话
          if($pdData){
          // 价格
          $pdPrice = $pdData['price'];
          $cartData = [
            'pid'=>$pid,
            'uid'=>$uid,
            'price'=>$pdPrice,
          ];
          // 首先我要先查购物车表里有没有加入购物车过
          $addcarted = [
            'pid'=>$pid,
            'uid'=>$uid,
          ];
          $selectRes = $this->cartModel->where($addcarted)->select();
          // halt($selectRes,'111111');
          // 有就直接更新num，先查出该pid的num的值
          if($selectRes){
            // value直接获取值
            $oldnum = $this->cartModel->where($addcarted)->value('num');
            // halt($oldnum);
            $oldnum++;
            $oldnums = ['num'=>$oldnum];
            $addcartdata = $this->cartModel->where($addcarted)->update($oldnums);
          }
          // 没有就直接插入
          else{
            $num = 1;
            $newcartData = [
            'pid'=>$pid,
            'uid'=>$uid,
            'price'=>$pdPrice,
            'num'=>$num
            ];
            $addcartdata = $this->cartModel->save($newcartData);
          }

          // $selectRes = $this->cartModel->where($cartData)->select();
          // // halt($selectRes);
          // $nums = [];
          // foreach ($selectRes as $item) {
          //     $num = $item->getAttr('num'); // 使用公共方法获取属性
          //     $nums[] = $num;
          // }
          // halt($nums);
          // 如果查到之前加入购物车的话
          // if($selectRes){
          //   // $num++;
          //   halt($selectRes['num'],'66666');
          // }
          // $addcartdata = $this->cartModel->save($cartData);
          // if($addcartdata){
          $this->success('加入购物车成功',null);
          // }
        }else{
          $this->error('没有此商品，无法加入购物车');
          exit;
        }
        }
      }
    }



    // // 步进器更新数量
    // public function getCartList(){
    //   if($this->request->isPost()){
        
    //   }
    // }
}

?>

